home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 44 / Amiga Format CD44 (1999-08-26)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-10].iso / -serious- / wb / visualprefs / docsitaliano / vp-developer.doc < prev    next >
Text File  |  1999-07-12  |  5KB  |  127 lines

  1.  
  2.                               Introduzione:
  3.  
  4.                L'INTERFACCIA DI VISUALPREFS PER SVILUPPATORI
  5.  
  6.                         Documento in preparazione
  7.  
  8.  
  9. Se sei uno sviluppatore puoi usufruire di certe funzionalità di VisualPrefs.
  10.  
  11. Anche se non esiste ancora una vera e propria API di VisualPrefs per gli
  12. sviluppatori è già possibile utilizzare le classi BOOPSI che VisualPrefs
  13. aggiunge al sistema.
  14.  
  15. Lo scopo di queste classi è fornire ai programmatori un modo facile di
  16. ottenere il "look di VisualPrefs" senza dover aspettare che io implementi
  17. in VisualPrefs un patch per i loro applicativi. ;-)
  18.  
  19. Attualmente c'è solo una classe:
  20.  
  21. "tbiclass" - la classe di immagini per la titlebar (titlebar image class)
  22.  
  23. Questa classe fornisce le immagini più comunemente usate per i gadget
  24. aggiunti dagli applicativi alla titlebar delle loro finestre. Esempi di
  25. ciò sono l'onnipresente gadget "iconify" o il gadget "padlock" di DirOpus 5.
  26.  
  27. Tutti i programmi che usano questa classe riceveranno automaticamente lo
  28. stesso aspetto per le loro immagini per la titlebar se VisualPrefs è in
  29. funzione. Probabilmente è meglio che avere miriadi di versioni diverse
  30. della stessa immagine...
  31.  
  32. Puoi usare "tbiclass" proprio come "sysiclass"; sono entrambe sottoclassi di
  33. "imageclass". Un'immagine "tbiclass" può essere creata chiamando NewObject()
  34. con i seguenti tag:
  35.  
  36. SYSIA_DrawInfo - Questo è assolutamente necessario. DEVI passare a "tbiclass"
  37.                  un puntatore a DrawInfo oppure NewObject() fallirà.
  38.  
  39. SYSIA_Which - Per specificare quale immagine si vuole; attualmente ci sono
  40.               sei tipi di immagine:
  41.  
  42.               POPUPIMAGE    - Immagine per il gadget "pop-up" di MUI
  43.               MUIIMAGE      - Immagine per il gadget "settings" di MUI
  44.               SNAPSHOTIMAGE - Immagine per il gadget "snapshot" di MUI
  45.               ICONIFYIMAGE  - Immagine per il gadget "iconify"
  46.               PADLOCKIMAGE  - Immagine per il gadget "padlock" di DirOpus
  47.               TBFRAMEIMAGE  - Immagine vuota (solo contorno) di uso generale
  48.  
  49. IA_Width, IA_Height - Questi sono riconosciuti solo dal tipo TBFRAMEIMAGE;
  50.                       gli altri tipi di immagine li ignorano e hanno sempre
  51.                       la stessa dimensione del gadget di profondità.
  52.  
  53. SYSIA_ReferenceFont - Questo è riconosciuto solo dal tipo TBFRAMEIMAGE;
  54.                       gli altri tipi di immagine lo ignorano e hanno sempre
  55.                       la stessa altezza del gadget di profondità.
  56.  
  57. Naturalmente se NewObject() fallisce dovresti fornire una immagine di ripiego
  58. creata dal tuo programma. Tuttavia ho rilasciato una classe "tbiclass"
  59. esterna freeware (dev/gui/titlebar_ic.lha) che potrai includere nella
  60. distribuzione dei tuoi applicativi. Questa classe fornirà le immagini
  61. necessarie e verrà sostituita automaticamente da quella di VisualPrefs
  62. se sarà presente.
  63. Di conseguenza puoi mantenere molto semplici le tue immagini di ripiego,
  64. o non averle affatto ;-)
  65.  
  66. È importante notare che tutte le istanze di immagini "tbiclass" avranno un
  67. valore di -1 in Image->LeftEdge. Questo non dovrebbe venire modificato e
  68. dovresti posizionare i tuoi gadget nella titlebar rispettando ciò. Il motivo
  69. di questo apparentemente strano comportamento è che anche le immagini dei
  70. gadget di Intuition per la titlebar funzionano in questo modo, e dovremmo
  71. cercare di mantenere la massima compatibilità con Intuition.
  72.  
  73. Inoltre assicurati di modificare se necessario la dimensione del tuo gadget
  74. per adattarla alla dimensione dell'immagine ottenuta.
  75.  
  76. Un esempio di tutto ciò potrebbe essere:
  77.  
  78.    ...
  79.  
  80.    /* Crea l'immagine */
  81.  
  82.    if (!(iconifyimage = NewObject(NULL,"tbiclass",SYSIA_Which,ICONIFYIMAGE,
  83.                                                   SYSIA_DrawInfo,dri,
  84.                                                   TAG_END)))
  85.    {
  86.       iconifyimage = builtin_iconifyimage;
  87.    }
  88.  
  89.    /* Usa l'immagine */
  90.  
  91.    gad->GadgetRender = iconifyimage;
  92.    ...
  93.  
  94.    /* Libera l'immagine */
  95.  
  96.    if (iconifyimage != builtin_iconifyimage) DisposeObject(iconifyimage);
  97.  
  98.    ...
  99.  
  100. Questo è tutto. Il vero file include per "tbiclass" si trova nella release
  101. a sè stante su Aminet, comunque tutto ciò che ti serve per usare "tbiclass"
  102. nei tuoi applicativi è inserire le righe seguenti in cima al tuo codice
  103. sorgente. :-]
  104.  
  105. ------ taglia qui ------8<------ taglia qui ------8<------ taglia qui ------
  106.  
  107. #define POPUPIMAGE    (101)
  108. #define MUIIMAGE      (102)
  109. #define SNAPSHOTIMAGE (103)
  110. #define ICONIFYIMAGE  (104)
  111. #define PADLOCKIMAGE  (105)
  112. #define TBFRAMEIMAGE  (106)
  113.  
  114. ------ taglia qui ------8<------ taglia qui ------8<------ taglia qui ------
  115.  
  116. C'è già un applicativo che usa "tbiclass", ViNCEd di Thomas Richter.
  117.  
  118. Spero che anche tu supporterai "tbiclass" e contribuirai in tal modo a
  119. dare finalmente un aspetto consistente a tutti i gadget per la titlebar
  120. usati negli applicativi!
  121.  
  122. Grazie,
  123.                                       Massimo Tantignone (tanti@intercom.it)
  124.  
  125.  
  126.  
  127.